Art et algorithmes
Essai de cartographie du domaine
Pierre Berger. 2/2007
En première analyse, la relation entre art et algorithmes pourrait se réduire à sorte de bijection: "un algorithme = une œuvre d'art", ou au mieux "une série d'œuvres d'art variant par les paramètres". Mais en général, et le développement du domaine y conduit, une œuvre d'art met en œuvre de nombreux algorithmes. Certains sont développés par l'artiste lui-même (il mérite alors le titre d' "algoriste) ou par le groupe (atelier, entreprise) auquel il appartient (logiciels "propriétaires" des firmes de multimédia ou de jeux notamment). D'autres sont incorporés aux logiciels graphiques du commerce ou de l'open source. D'autres enfin, masqués à l'artiste, sont intégrés aux infrastructures qu'il utilise (par exemple les transformations de formation de format à partir des fichiers .jpg).
Pour mieux comprendre comment tous ces algorithmes sont mis en œuvre par les artistes et s'intègrent plus ou moins profondément les uns aux autres, tentons de d'en dresser une cartographie globale. Elle ne se veut pas autre chose qu'une première base de réflexion.
(Pour les références bibliographiques, on se référera aux éléments fournis sur ce même blog dans un article spécifique).
Rappelons d'abord quelques paramètres généraux qui caractérisent les algorithmes notamment le nombre de dimension des œuvres qu'ils traitent (du 2D pur au 3D animé), l'espace des couleurs, la résolution, etc.
Ceci posé, notre cartographie suit d'abord la linéarité "horizontale" du développement d'un œuvre. Il se développe ensuite "verticalement" les niveaux, en partant des caractéristiques les plus matérielles. Il évoque alors les modes d'intégration et de mise en œuvre. Nous conclurons sur la question des algorithmes d'évaluation "esthétique".
Le développement "horizontal" de l'oeuvre
La création peut s'envisager comme une démarche allant de la prise d'images à la matérialisation de l'oeuvre.
Les images de départ peuvent être créées ex nihilo
(modélisation), saisies par des capteurs, prises dans des mémoires ou
téléchargées. Principaux algorithmes dans cette phase :
- modélisation (tracé de lignes, extrusion, tournage,
lissage, symétrie),
- pilotage et réglage des capteurs (mise au point, réglage
des blancs, interpolations...),
- compression, changements de format
Les images peuvent être assemblées, combinées. C'est la composition (compositing).
Elles peuvent être modifiées par des filtres, des interpoleurs, des outils d'anticrénelage, etc.
S'il s'agit d'image mobiles, toutes les opérations précédentes sont complétées par des fonctions temporelles (interpolations, mise en séquence, boucle, etc.).
Les touches finales sont apportées par le rendu (rendering) notamment les textures et l'éclairage (ombrage, tracé de rayons). Ces dernières opérations ont un fort chargement algorithmique, qui ne fait que croître (voir par exemple [Ebert]).
Enfin, le pilotage des périphériques de sortie comprend aussi une bonne masse d'algorithmes, en général masqués à l'artiste, notamment parce qu'ils sont largement intégrés aux cartes graphiques, aux pilotes et aux processeurs internes des imprimantes (et des autres périphériques : écrans, serveurs en ligne, robots).
Les algorithmes de "changement de niveau"
Par rapport à ce schéma linéaire "horizontal", certains types d'algorithmes peuvent être qualifiés de verticaux, assurant un "changement de niveau".
Aux "bas niveaux" des fonctions de service donnent accès aux fichiers et réseaux. Elles gèrent des masses de pixels, et même de bits, de manière, les blobs (binary large objects), et plus généralement les fichiers et les flux (steams).
En général, ces fonctions de service n'intéressent pas explicitement les artistes. Il y aurait pourtant des pistes à explorer, de même que, malgré la peinture en tubes, certains continuent à préparer eux-mêmes leurs mixtures personnelles à partir de pigments et de liants.
Au dessus, en "remontant" à partir des images,
essentiellement vers un niveau "linguistique", on peut parler
d'analyse au sens large, et recenser les algorithmes de
- mesure, histogrammes et leur analyse,
- segmentation (décomposition en régions connexes),
- reconnaissance des formes et plus généralement
"vision" (artificielle).
Ces opérations "remontantes" ont souvent un caractère incertain, heuristique. Elles pêchent tantôt par défaut (non-reconnaissance de formes pourtant présentes dans l'image), tantôt par excès (reconnaissance d'images non présentes). Un peu comme les sourds qui tantôt font répéter, tantôt répondent à côté de la question.
Symétriquement, des algorithmes font passer du niveau linguistique vers l'image proprement dite, à partir de mots pris séparément ou organisés dans des textes. A première vue, ces opération de "génération" ou de "synthèse" n'ont rien d'aléatoire. Le tracé d'une ligne, d'un rectangle ou le dessin d'un modèle prédéfini sont strictement déterministes. En pratique, il peut en aller autrement :
- la résolution de l'image peut s'avérer insuffisante pour représenter le modèle demandé (par exemple, on ne peut pas représenter les lettres de l'alphabet dans une matrice de 2 bits par 2 bits),
- les commandes peuvent s'avérer contradictoire entre elles, soit logiquement ("une grande petite maison") soit dans leurs exigences (tracer un très grand carré tout à fait dans le coin en bas à gauche)...
Algorithmes d'interaction avec l'artiste et d'agrégation des fonctions
Tous ces algorithmes peuvent être mis en oeuvre un par un, par des commandes déclanchées au clavier (ligne de commande) ou à la souris. Les commandes peuvent s'enchaîner dans le cadre de "scripts", notamment :
- pour améliorer l'efficacité du travail de composition, comme le commente assez longuement [Brinkman], qui donne notamment un exemple sophistiqué tiré de Titanic. On peut ici parler d'algorithmes de flot de travail (workflow) ou, dans certains cas, de plate-forme, de système d'exploitation voire de robotique
- pour donner vie aux "personnages sans joueur" (NPC, non-player characters),
- pour créer des oeuvres d'art autonomes, à la limite, totalement autonomes (programmes Aaron d'Harold Cohen, Roxame, de Pierre Berger),
- pour faire coopérer entre plusieurs artistes, voir de grosses équipes (voir par exemple l'organisation de telles équipes pour les jeux dans Brinkmann et (level design). on pourrait aller très loin dans ce sens en s'inspirant de la riche technologie des "web services". [Chauvet]
Mais un intérêt majeur de ce passage au niveau linguistique est d'accéder à des possibilités opératoires qui leurs sont propres (concaténation, organisation en lignes ou phrases), déduction (si le langage est suffisamment formel), et surtout les "structures de contrôle" de la programmation : branchement, conditionnement, itération, récursion, génétique. L'artiste développeur (algoriste) accède ici à une large palette qui reste encore largment à explorer
Algorithmes d'évaluation esthétique
Concluons sur un point est peut-être celui qui semblera le plus inattendu, ou contestable. Il y a en effet une sorte de consensus pour admettre que l'évaluation d'une œuvre d'art relève largement de la subjectivité. Pourtant, individus et organisations sociales (marché, institutions publics) ne cessent d'évaluer les œuvres. Certains aspects de l'évaluation ne pourraient-ils être modélisés, voire programmés ?
Les questions intéressantes se posent nous semble-t-il, entre deux extrêmes :
- d'une part des évaluations techniques qui ne prêtent guère à discussion et peuvent plus ou moins aisément se programmer : image vide (ou blanche) ou bruit blanc, dominante anormale pour une image naturelle (exemple classique : photographie prise en intérieur avec une pellicule couleur prévue pour le plein air),
- d'autre part des évaluations strictement subjectives relevant à la limite de la métaphysique ou des engagements spirituelles personnels.